# *-*- coding:utf-8 -*-
# @Author  : Eliza
# @Time    : 2021/7/18 13:23
# @Software : RubyMine

# Array 也是一个对象
# 简单定义
arrStr = %w(aa ss dd ff)
puts arrStr
puts arrStr[0]
puts "--------"
# 运算符也是一个方法
puts arrStr + [1] #简易添加
puts "--------"

puts "--------"
arrStr[0][0] = "cc"
puts arrStr
puts "--------"
a = Array.new(5, 2) #5个2
puts a
puts "--------"
a[0] = 1
puts a
puts "--str------"
ba = Array.new(3, "abcd")
puts ba
puts "--str------"
ba[0][0] = "A"
puts ba #第一个字母全都变成 A
puts "--------"
puts ba.object_id #地址相同,三个相同的object
puts ba[0].object_id
puts ba[1].object_id
puts ba[2].object_id
puts "--str1------"
ca = Array.new(3) { "abcd" }
puts ca
puts "--str------"
ca[0][0] = "A"
puts ca #仅仅第一个元素的第一个字母会变化
puts "--------"
puts ca.object_id #地址不同
puts ca[0].object_id
puts ca[1].object_id
puts ca[2].object_id
puts "--str2------"
arr01 = %w(aaa bbb ccc ddd eee eee)
puts arr01[0..2] #取部分
puts "--------"

puts arr01.fetch(0, "value") #如果没有取到 就返回 value
puts "--------"
puts arr01.fetch(6, "value")
puts arr01.fetch(6, "value") #如果没有取到 就返回 value

puts arr01.include?("aaa") #是否存在
puts "----添加删除----"
puts arr01.push("ok") #末尾添加
arr01[10] = "a10" #中间自动填充 nil
puts arr01
puts "--------------"

arr01.delete_at(0) #索引删除
puts arr01
arr01.delete("bbb")
puts "--------------"
arr01.uniq #去除重复值,不改变原数组

puts arr01
puts "--------------"
arr01.shuffle #洗牌，不改变原数组
puts arr01
puts "--------------"
arr01.uniq! #去除重复值,改变原数组
arr01.shuffle! #洗牌,改变原数组
puts arr01
puts "--------------"
arr02 = [[12, 14], [43, 54]]
puts arr02
puts "--------------"
arr02.each { |e| p e }
arr02.reverse_each { |e| p e } #反序遍历